var mongoose = require('mongoose')

var Schema = mongoose.Schema

// 链接数据库
// 指定链接的数据库不需要存在，当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost/test')


// 设计文档结构（表结构）
// 字段名称就是表结构中的属性名称
// 值
// 约束的目的是为了保证数据的完整性，不要有脏数据
var userSchema = new Schema({
    username: {
        type: String ,
        required: true // 必须有
    },
    password: {
        type: String,
        required: true 
    },
    emai:{
        type: String
    }
})

// 将文档结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为model
// 第一个参数：传入一个大写名词单数字符串用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成 小写复数 的集合名称
// 列如这里的User 最终会变成 users 集合名称
// 
// 第二个参数：架构Schema
// 
// 返回值：模型对象（模型构造函数）
var User = mongoose.model('User',userSchema)


// 当我们有了模型构造函数之后，就可以使用这个构造函数对 users集合中的数据为所欲为了
var admin = new User({
    username:'yxh',
    password:'123456',
    email:'16245@qq.com'
})

/**
 * 保存数据
 */
// admin.save(function (err,ret) {
//     if (err) {
//         console.log('flase')
//     } else{
//         console.log('success')
//         console.log(ret)
//     }
// })



/**
 * 查询所有数据
 */
// User.find(function (err,ret) {
//     if (err) {
//         console.log('查询失败')
//     }else{
//         console.log(ret)
//     }
// })

/**
 * 根据条件查询数据
 * 返回一个数组对象
 */
// User.find({
// username:'yxh'
// },function (err,ret) {
//     if (err) {
//         console.log('查询失败')
//     }else{
//         console.log(ret)
//     }
// })

/**
 * 根据条件查询数据
 * 返回一个对象
 * 
 * findOne 如果不给条件默认返回第一条数据
 */
//  User.findOne({
//     username:'yxh'
//     },function (err,ret) {
//         if (err) {
//             console.log('查询失败')
//         }else{
//             console.log(ret)
//         }
//     })

/**
 * 根据条件删除数据
 * 
 */

// User.remove({
//     username:'yxh'
// },
// function (err,ret) {
//     if (err) {
//         console.log('删除失败')
//     }else{
//         console.log('删除成功')
//         console.log(ret)
//     }
// })


/**
 * 根据条件更新数据
 * 
 */
// User.findByIdAndUpdate('611906d783d4fe1624a69e6e',{
//     password:'123'
// },function (err,ret) {
//     if (err) {
//         console.log('更新失败')
//     }else{
//         console.log('更新成功')
//         console.log(ret)
//     }
// })

